import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../pages/login'
import Layout from '../pages/Layout.vue'
import store from '../store';
import home from '../pages/home.vue'
import adminInfo from '../pages/userManage/admin'
import userInfo from '../pages/userManage/user'

Vue.use(VueRouter)

const routes = [
    // 登录
    {
        path: '/login',
        name: 'Login',
        component: Login,
        meta: {
            requiresAuth: false,
            hideForAuth: true,
        },
    },
    // 主界面（父路由）
    {
        path: '',
        name: 'Layout',
        component: Layout,
        meta: { requiresAuth: true },
        // 子路由（会在Layout组件的<router-view>中渲染）
        children: [
            // 系统首页（默认子路由）
            {
                path: '', // 空路径表示默认子路由
                name: 'home',
                component: home,
            },
            // 管理员信息
            {
                path: 'adminInfo', // 子路由路径不加斜杠
                name: 'AdminInfo',
                component: adminInfo,
            },
            // 用户信息
            {
                path: 'userInfo',
                name: 'UserInfo',
                component: userInfo,
            },
            //图书信息
            {
                path: 'bookInfo',
                name: 'BookInfo',
                component: () => import('../pages/infoManage/bookInfo'),
            },
            //图书分类
            {
                path: 'bookType',
                name: 'BookType',
                component: () => import('../pages/infoManage/typeInfo'),
            },
            //借阅信息
            {
                path: 'borrowInfo',
                name: 'BorrowInfo',
                component: () => import('../pages/infoManage/borrowInfo'),
            },
            //请假审批
            {
                path: 'audit',
                name: 'Audit',
                component: () => import('../pages/appManage/audit'),
            },
            //图书借阅
            {
                path: 'borrow',
                name: 'Borrow',
                component: () => import('../pages/appManage/borrow'),
            },
            //日志管理
            {
                path: 'log',
                name: 'Log',
                component: () => import('../pages/sys/log'),
            },
            //系统公告
            {
                path: 'notice',
                name: 'Notice',
                component: () => import('../pages/sys/notice'),
            }


        ]
    },
    // 根路径重定向到主界面的默认子路由
    {
        path: '/',
        redirect: '/Layout' // 访问/时自动跳转到/Layout（会加载默认子路由home）
    }
]

const router = new VueRouter({
    mode: 'hash',
    routes,
})

// 全局前置守卫 - 检查登录状态
router.beforeEach((to, from, next) => {
    // 检查登录状态
    
    const token = store.state.token;
    const isLoggedIn = !!token;

    // 检查路由是否需要认证
    const requiresAuth = to.matched.some(record => record.meta.requiresAuth);

    // 检查路由是否对已登录用户隐藏
    const hideForAuth = to.matched.some(record => record.meta.hideForAuth);

    if (requiresAuth && !isLoggedIn) {
        // 需要登录但未登录，跳转到登录页
        console.log('未登录，跳转到登录页');
        next('/login');
    } else if (hideForAuth && isLoggedIn) {
        // 已登录用户访问登录页，跳转到首页
        console.log('已登录，跳转到首页');
        next('/');
    } else {
        // 正常访问
        next();
    }
});

// 全局后置钩子 - 设置页面标题
router.afterEach(to => {
    const titles = {
        Login: '登录 - 普通系统',
        Layout: '首页 - 普通系统',
        home: '系统首页 - 普通系统',
        AdminInfo: '管理员信息 - 普通系统',
        UserInfo: '用户信息 - 普通系统',
        BookInfo: '图书信息 - 普通系统'        
    };

    document.title = titles[to.name] || '普通系统';
});
export default router

